package com.docmgmt.mvp.ragflow.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;

/**
 * 更新文档请求 DTO
 * 
 * PUT /api/v1/datasets/{dataset_id}/documents/{document_id}
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UpdateDocumentRequest {

    /**
     * 文档名称
     */
    @Size(min = 1, max = 255, message = "文档名称长度必须在1-255之间")
    private String name;

    /**
     * 分块方法（naive、manual、qa等）
     */
    @JsonProperty("chunk_method")
    @Pattern(
        regexp = "^(naive|manual|qa|table|paper|book|laws|presentation|picture|one|email|tag)$",
        message = "chunk_method必须是支持的类型之一"
    )
    private String chunkMethod;

    /**
     * 解析器配置
     */
    @JsonProperty("parser_config")
    @Valid
    private ParserConfigDTO parserConfig;
}

